A driver image file (or “driver”) is a program routine that links an operating system for a computing device to a peripheral device. A driver image file contains the machine language utilized by the peripheral device to perform functions requested by a corresponding program code. For a peripheral device that can be used in cooperation with a computing device, a driver package that contains associated driver files, including a driver image file, is installed onto the hard drive of the computing device before the peripheral device is able to perform its intended functions.
The number of driver packages installed on a hard drive of a computing device increases with the number of peripheral devices supported by the operating system of the computing device. In particular, for most every peripheral device that is used in association with a computing device, a rather steady stream of driver packages is installed onto the hard drive of the computing device to either replace or update an existing driver package or driver files associated with the existing driver package.
Unfortunately, vendors of peripheral devices and corresponding driver packages frequently use the same names for new and updated versions of the driver files associated with the aforementioned driver packages. As the new or updated driver packages or associated driver files are installed onto a hard drive of a computing device, they are typically written over previously installed driver packages that have commonly named driver files associated therewith, regardless of whether the commonly named driver files relate to the same peripheral device. Thus, repetitive usage of driver file names leads to what those skilled in the art call “driver collisions.” As a result of a driver file collision, a peripheral device using a particular driver file may actually call another driver file having the same name as the intended driver file, or the peripheral device may call for a driver file that simply no longer exists because it has been overwritten by a subsequently installed driver file having the same name.
Researchers at Microsoft Corporation of Redmond, Wash. determined that more than 157,000 driver files are found to be supported by a current version of the Windows® Operating System, but approximately only 26,000 of those driver files are uniquely named. That is, close to 131,000 driver files supported by the operating system have redundant names. Further still, the study found that the number of uniquely named driver files submitted by vendors of peripheral devices increases at a rate of at least 12 per day, but the total number of new driver files supported by the operating system increases at a rate of more than 150 per day. In other words, driver files bearing a repeated name are added at a rate of approximately 138 per day. Accordingly, the rate of driver collisions increases as well.
The following scenario typifies the problems resulting from redundantly named driver files loaded onto an operating system. The example contemplates a user who plugs a printer into her computer, and installs the corresponding driver package. The driver package includes an information file “INF,” which indicates which files are contained in the driver package. Typically, the INF file indicates the presence of at least a driver image file (e.g., “foo.sys”), which is installed onto the hard drive of the user's computer. The example further contemplates the user subsequently plugging a photocopier into her computer, and installing the corresponding driver package that also has a driver image file named “foo.sys.” Under presently implemented solutions, the driver image file foo.sys corresponding to the most recently plugged-in copier is installed over the older driver image file foo.sys corresponding to the printer. As a result, any attempt to use the printer results in a driver collision when an attempt is made to load foo.sys corresponding to the copier into the memory of the computer for use by the corresponding application program. Accordingly, the printer is inoperable on the user's computer.
Another example scenario relates to vendors intending different versions of their peripheral devices to be driven by different versions of driver image files. However, when a vendor fails to change the name of at least one of the driver image files when updating or upgrading an earlier version of the driver image files, the older version of the driver image file on the hard drive of the computing device is overwritten by the updated driver image file. Consequently, when the newer version of a driver image file is written over the previous version of the driver image file having the same name, the peripheral device requiring the previous version of the driver image file is unable to load the intended driver image file into a memory, and thus the peripheral device cannot operate on the computing device. That is, a new or updated driver image file having the same name as a previous version of the driver image file has been installed onto the hard drive of the computing device in place of the previous version of the driver image file.